Giter Site home page Giter Site logo

compile error about adtree HOT 17 CLOSED

tudelft3d avatar tudelft3d commented on June 14, 2024
compile error

from adtree.

Comments (17)

LiangliangNan avatar LiangliangNan commented on June 14, 2024

Which operating system and compiler are you using?
You need a compiler that supports C++11.

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

thanks for your reply!
My operating system is ubuntu16
And here is my compiler information:
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
And when i make this project,the error occured:

(base) rthpc@Rt:~/anaconda3/envs/code/ADTree/build$ make -j8
Scanning dependencies of target glew
Scanning dependencies of target tetgen
Scanning dependencies of target kd_tree
Scanning dependencies of target glfw
Scanning dependencies of target cminpack
Scanning dependencies of target tinyfiledialogs
Scanning dependencies of target util
[ 1%] Building CXX object 3rd_party/easy3d/util/CMakeFiles/util.dir/dialogs.cpp.o
[ 3%] Building CXX object 3rd_party/kd_tree/CMakeFiles/kd_tree.dir/PriorityQueue.cpp.o
[ 4%] Building CXX object 3rd_party/kd_tree/CMakeFiles/kd_tree.dir/KdTree.cpp.o
[ 2%] Building C object 3rd_party/glew/CMakeFiles/glew.dir/src/glew.c.o
[ 5%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/chkder.c.o
[ 6%] Building C object 3rd_party/tinyfiledialogs/CMakeFiles/tinyfiledialogs.dir/tinyfiledialogs.c.o
[ 6%] Building CXX object 3rd_party/tetgen/CMakeFiles/tetgen.dir/tetgen.cpp.o
[ 7%] Building CXX object 3rd_party/kd_tree/CMakeFiles/kd_tree.dir/Vector2D.cpp.o
[ 8%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/chkder_.c.o
[ 8%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/context.c.o
[ 8%] Building CXX object 3rd_party/kd_tree/CMakeFiles/kd_tree.dir/Vector3D.cpp.o
[ 8%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/covar.c.o
[ 9%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/covar1.c.o
[ 10%] Building CXX object 3rd_party/tetgen/CMakeFiles/tetgen.dir/predicates.cpp.o
[ 11%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/init.c.o
[ 12%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/covar_.c.o
[ 13%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/dogleg.c.o
[ 14%] Building CXX object 3rd_party/easy3d/util/CMakeFiles/util.dir/file.cpp.o
[ 14%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/dogleg_.c.o
[ 15%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/input.c.o
[ 16%] Linking CXX static library ../../lib/libkd_tree.a
[ 17%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/dpmpar.c.o
[ 17%] Built target kd_tree
[ 18%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/dpmpar_.c.o
[ 19%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/enorm.c.o
[ 19%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/enorm_.c.o
[ 20%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/fdjac1.c.o
[ 21%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/monitor.c.o
[ 21%] Linking C static library ../../lib/libtinyfiledialogs.a
[ 21%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/vulkan.c.o
[ 21%] Built target tinyfiledialogs
[ 22%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/fdjac1_.c.o
[ 23%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/fdjac2.c.o
[ 23%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/fdjac2_.c.o
[ 24%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/window.c.o
[ 25%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrd.c.o
[ 26%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/x11_init.c.o
[ 27%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrd1.c.o
[ 28%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrd1_.c.o
[ 28%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrd_.c.o
[ 29%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrj.c.o
[ 30%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/x11_monitor.c.o
[ 30%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/x11_window.c.o
[ 31%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrj1.c.o
[ 32%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrj1_.c.o
[ 32%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/hybrj_.c.o
[ 33%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmder.c.o
[ 34%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmder1.c.o
[ 35%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/xkb_unicode.c.o
[ 35%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmder1_.c.o
[ 36%] Linking C static library ../../lib/libglew.a
[ 37%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmder_.c.o
[ 38%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/posix_time.c.o
[ 39%] Building CXX object 3rd_party/easy3d/util/CMakeFiles/util.dir/chrono_watch.cpp.o
[ 40%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmdif.c.o
[ 41%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/posix_thread.c.o
[ 41%] Built target glew
[ 41%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/glx_context.c.o
[ 42%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmdif1.c.o
[ 42%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmdif1_.c.o
[ 43%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/egl_context.c.o
[ 44%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/osmesa_context.c.o
[ 45%] Building C object 3rd_party/glfw/src/CMakeFiles/glfw.dir/linux_joystick.c.o
[ 46%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmdif_.c.o
[ 47%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmpar.c.o
[ 47%] Building CXX object 3rd_party/easy3d/util/CMakeFiles/util.dir/stop_watch.cpp.o
[ 48%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmpar_.c.o
[ 48%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmstr.c.o
[ 49%] Building CXX object 3rd_party/easy3d/util/CMakeFiles/util.dir/string.cpp.o
[ 50%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmstr1.c.o
[ 50%] Linking C static library ../../../lib/libglfw3.a
[ 51%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmstr1_.c.o
[ 52%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/lmstr_.c.o
[ 52%] Built target glfw
Scanning dependencies of target imgui
[ 52%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/qform.c.o
[ 53%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/qform_.c.o
[ 54%] Building CXX object 3rd_party/imgui/CMakeFiles/imgui.dir/imgui.cpp.o
[ 55%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/qrfac.c.o
[ 56%] Building CXX object 3rd_party/imgui/CMakeFiles/imgui.dir/imgui_demo.cpp.o
[ 57%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/qrfac_.c.o
[ 57%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/qrsolv.c.o
[ 58%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/qrsolv_.c.o
[ 59%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/r1mpyq.c.o
[ 60%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/r1mpyq_.c.o
[ 60%] Building CXX object 3rd_party/imgui/CMakeFiles/imgui.dir/imgui_draw.cpp.o
[ 61%] Building CXX object 3rd_party/imgui/CMakeFiles/imgui.dir/imgui_widgets.cpp.o
[ 61%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/r1updt.c.o
[ 62%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/r1updt_.c.o
[ 63%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/rwupdt.c.o
[ 64%] Building C object 3rd_party/cminpack/CMakeFiles/cminpack.dir/rwupdt_.c.o
[ 65%] Linking CXX static library ../../../lib/libutil.a
[ 66%] Building CXX object 3rd_party/imgui/CMakeFiles/imgui.dir/impl/imgui_impl_opengl3.cpp.o
[ 66%] Linking C static library ../../lib/libcminpack.a
[ 67%] Building CXX object 3rd_party/imgui/CMakeFiles/imgui.dir/impl/imgui_impl_glfw.cpp.o
[ 67%] Built target util
Scanning dependencies of target viewer
[ 67%] Built target cminpack
Scanning dependencies of target optimizer_lm
[ 68%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/ambient_occlusion.cpp.o
[ 69%] Building CXX object 3rd_party/optimizer_lm/CMakeFiles/optimizer_lm.dir/optimizer_lm.cpp.o
[ 70%] Linking CXX static library ../../lib/liboptimizer_lm.a
[ 70%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/average_color_blending.cpp.o
[ 71%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/camera.cpp.o
[ 71%] Built target optimizer_lm
[ 72%] Linking CXX static library ../../lib/libtetgen.a
[ 73%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/constraint.cpp.o
[ 73%] Built target tetgen
[ 73%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/drawable.cpp.o
[ 74%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/dual_depth_peeling.cpp.o
[ 75%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/eye_dome_lighting.cpp.o
[ 75%] Linking CXX static library ../../lib/libimgui.a
[ 75%] Built target imgui
[ 76%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/frame.cpp.o
[ 76%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/framebuffer_object.cpp.o
[ 77%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/frustum.cpp.o
[ 78%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/manipulated_camera_frame.cpp.o
[ 79%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/manipulated_frame.cpp.o
[ 80%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/opengl_error.cpp.o
[ 80%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/model.cpp.o
[ 81%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/opengl_info.cpp.o
[ 82%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/primitives.cpp.o
[ 82%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/read_pixel.cpp.o
[ 83%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/setting.cpp.o
[ 84%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/shader_manager.cpp.o
[ 85%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/shader_program.cpp.o
[ 85%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/shadow.cpp.o
[ 86%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/soft_shadow.cpp.o
[ 87%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/opengl_timer.cpp.o
[ 88%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/transform.cpp.o
[ 88%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/transform_decompose.cpp.o
[ 89%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/vertex_array_object.cpp.o
[ 90%] Building CXX object 3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/viewer.cpp.o
In file included from /home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/viewer/viewer.cpp:62:0:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In lambda function:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:192:37: error: parameter packs not expanded with ‘...’:
func(std::forward(args)...);
^
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:192:37: note: ‘args’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In lambda function:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:206:68: error: parameter packs not expanded with ‘...’:
auto f = std::bind(func, owner, std::forward(args)...);
^
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:206:68: note: ‘args’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In lambda function:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:221:37: error: parameter packs not expanded with ‘...’:
func(std::forward(args)...);
^
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:221:37: note: ‘args’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In lambda function:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:238:64: error: parameter packs not expanded with ‘...’:
auto f = std::bind(func, owner, std::forward(args)...);
^
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:238:64: note: ‘args’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In lambda function:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:254:41: error: parameter packs not expanded with ‘...’:
func(std::forward(args)...);
^
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:254:41: note: ‘args’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In lambda function:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:273:68: error: parameter packs not expanded with ‘...’:
auto f = std::bind(func, owner, std::forward(args)...);
^
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:273:68: note: ‘args’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h: In instantiation of ‘struct easy3d::Timer::single_shot(int, Function&&, Args&& ...) [with Function = easy3d::Viewer::mouse_press_event(int, int, int, int)::__lambda16; Args = {}]::__lambda0’:
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:193:10: required from ‘static void easy3d::Timer::single_shot(int, Function&&, Args&& ...) [with Function = easy3d::Viewer::mouse_press_event(int, int, int, int)::__lambda16; Args = {}]’
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/viewer/viewer.cpp:515:18: required from here
/home/rthpc/anaconda3/envs/code/ADTree/3rd_party/easy3d/util/timer.h:192:37: error: using invalid field ‘easy3d::Timer::single_shot(int, Function&&, Args&& ...)::__lambda0::__args’
func(std::forward(args)...);
^
make[2]: *** [3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/viewer.cpp.o] 错误 1
make[2]: *** 正在等待未完成的任务....
make[1]: *** [3rd_party/easy3d/viewer/CMakeFiles/viewer.dir/all] 错误 2
make: *** [all] 错误 2

is this issue related to easy3D?how can i fix it?
thank you

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

Some features of the Timer require C++14, and it seems your compiler doesn't support that. You can try to replace
set (CMAKE_CXX_STANDARD 11) # in file CMakeLists.txt in the root directory of adtree.
by
set (CMAKE_CXX_STANDARD 14)
If it still doesn't work, we can confirm that your compiler doesn't support C++14.

Then a simple workaround is to just comment out the following lines and let me know how it works:
#include <easy3d/util/timer.h> // line 62
and

    const int delay = 2000;               //  line 510
    Timer::single_shot(delay, [&]() {
        show_pivot_point_ = false;
        pivot_point_ = vec2(0, 0);
        update();
    });

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

Hello liangliang,after i changed the file CMakeLists.txt as you said, it didn't work still,
by the way,where is the file that i should comment out:)

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

(As the errors pointed out) It is in /3rd_party/easy3d/viewer/viewer.cpp .

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

after i comment out these line i get this exciting result:
[100%] Built target AdTree
thanks for your patience and your work is very enlightening to me:)

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

Sorry to bother you but how can i use this executable file AdTree?:(

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

When you run the program, you should have seen the menus.
Open a point cloud file, and click on one of the menus under "Reconstruction". This demo version has very few menus.

You should have tried a bit before you ask a question :-)

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

Were you able to generate results from some point clouds (e.g., the examples in the 'data' folder)?

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

liangliang,so sorry unable to reply for the past few days
when i run this excutable file: build/bin/AdTree,this is the result:
(base) rthpc@Rt:~/anaconda3/envs/code/ADTree/build/bin$ ./AdTree
GLFW error 65542: GLX: GLX version 1.3 is required
terminate called after throwing an instance of 'std::runtime_error'
what(): Could not create an OpenGL 3.2 context!
已放弃 (核心已转储)
i heard ubuntu 16.04 does not support GLX1.3, so i need to upgrade the operating system?

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

hello liangliang,after i changed an computer which runs ubuntu18 to run this program the problem was solved! i can get the reconstruction result on your pointcloud now!
But how can i change the code if i want to get the skeleton before cylinder fitting since the GUI doesnt gives an option?And if possible i want to get the result after every single step(like skeleton extract,simplifying..) what should i do?can i change the radius of the tree branch which is related to its weight in your paper? you know for a tree or plant is too small the radius you set in your paper might not be suitable since the radius of branch are almost the same with main trunk

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

Good to know. But still, did you try the proposed solution on your "old" Linux? I guess that should also work.
I just added the support to export skeletons, i.e., save the skeleton into a file (in PLY format). After you load it into the easy3d viewer, you can press v to hide/show the vertices.

from adtree.

MavAlex avatar MavAlex commented on June 14, 2024

well just now i tried to export the skeleton after "reconstruction skeleton" but failed,the information on terminal is"not implemented yet"

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

from adtree.

LiangliangNan avatar LiangliangNan commented on June 14, 2024

Since the original issue has been resolved so I will close this issue. Good luck!

from adtree.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.